/**
 * @file test_gestiondefichier.c
 * @author Florian Castellane <florian.castellane@grenoble-inp.org>
 * @author Christian Proust <christian.proust@phelma.grenoble-inp.fr>
 * @date Tue Sep 25 01:04:00 2012
 * @brief Fonctions de gestion de fichiers.
 *
 */
 
 
 
///////////////		FONCTIONS À TESTER	////////////
/*
LISTE creer_liste(void);
int est_vide(const LISTE L);
LISTE ajout_tete(const ELEMENT elementdelaliste,LISTE tete);
LISTE supprimer_tete(LISTE L);
LISTE ajout_queue(const ELEMENT C,LISTE L);
void visualiser_liste(LISTE liste);


--------------		FONCTIONS NON TESTEE	-----------
char* ajouter_caractere_chaine_lexeme_dynamique(char **chaine,char caractere_ajo
uter);
void initialiser(ELEMENT E);
char* alloue_et_enregistre_chaine(char* chaine);// pas utilisee		*/


#include <stdio.h>
#include <stdlib.h>
#include "include/gestiondetypes.h"
#include <string.h>

// Comme les fonctions dependent les unes des autres, elles seront toutes testee
// dans le main

void test_liste0(LISTE *pL1,LISTE *pL2,LISTE *pL3,ELEMENT *pe);
void test_liste4(LISTE *pL1,LISTE *pL2,LISTE *pL3,ELEMENT *pe);
void test_liste3(LISTE *pL1,LISTE *pL2,LISTE *pL3,ELEMENT *pe);
void test_liste2(LISTE *pL1,LISTE *pL2,LISTE *pL3,ELEMENT *pe);
void test_liste1(LISTE *pL1,LISTE *pL2,LISTE *pL3,ELEMENT *pe);
int main()
{
	LISTE L1,L2,L3;
	ELEMENT e[11];
	int i,choix;
	i=choix=0;
	char chaine[10];

	L3=1265;
	
	L1=L2=creer_liste();
	printf("%p%p%p\n",L1,L2,L3);
	for(i=0;i<8;i++)
	{
		sprintf(chaine,"e[%d]",i);
		(e[i]).chaine_lexeme=strdup(chaine);
		printf("%s",(e[i]).chaine_lexeme);
	}
	(e[10]).chaine_lexeme="e10";
	(e[9]).chaine_lexeme=NULL;
	test_liste0(&L1,&L2,&L3,e);
	
	printf("\n\n\nSi tout a bien fonctionne, quelle commande interdite\n\
	voulez vous maintenant executer ?\n\
	\t1-Rentrer un element non allouee dynamiquement puis supprimer la liste\n\
	\t2-Rentrer un element nul puis supprimer la liste\n\
	\t3-Supprimer une liste non cree\n\
	\t4-Ajouter a une liste non cree.\n");
	

	while(!choix)
	{
		scanf("%d",&choix);
		switch(choix)
		{
			case 1:
				test_liste1(&L1,&L2,&L3,e);
				break;
			case 2:
				 test_liste2(&L1,&L2,&L3,e);
				break;
			case 3: 
				test_liste3(&L1,&L2,&L3,e);
				break;
			case 4: 
				test_liste4(&L1,&L2,&L3,e);
				break;
			default:
				printf("\n reponse erronee, try again !");
				choix=0;
				break;
		}
	}
	
	
	supprimer_tete(L1);void test_liste2(LISTE *pL1,LISTE *pL2,LISTE *pL3,ELEMENT *pe)
{
	LISTE L1=*pL1,L2=*pL2,L3=*pL3;
	ELEMENT *e=pe;

	L1=ajout_tete(e[9],L1);	
	printf("\n\nVisualisation de L1 : %p \n",L1);
	visualiser_liste(L1);
	supprimer_tete(L1);
}
	supprimer_tete(L1);
	
	
	return 0;
}

void test_liste0(LISTE *pL1,LISTE *pL2,LISTE *pL3,ELEMENT *pe)
{
	LISTE L1=*pL1,L2=*pL2,L3=*pL3;
	ELEMENT *e=pe;
	printf("\n\nVisualisation de L1 : %p \n",L1);
	
	visualiser_liste(L1);
	
	L1=ajout_tete(e[0],L1);
	L1=ajout_tete(e[1],L1);	
	printf("\n\nVisualisation de L1 : %p \n",L1);
	visualiser_liste(L1);
		
	L2=ajout_queue(e[2],L2);
	L2=ajout_queue(e[3],L2);
	printf("\n\nVisualisation de L2 : %p \n",L1);
	visualiser_liste(L2);
	supprimer_tete(L2);
	supprimer_tete(L2);
	supprimer_tete(L2);
	supprimer_tete(L2);
}

void test_liste1(LISTE *pL1,LISTE *pL2,LISTE *pL3,ELEMENT *pe)
{
	LISTE L1=*pL1,L2=*pL2,L3=*pL3;
	ELEMENT *e=pe;

	L1=ajout_tete(e[10],L1);	
	printf("\n\nVisualisation de L1 : %p \n",L1);
	visualiser_liste(L1);
	supprimer_tete(L1);
}
void test_liste2(LISTE *pL1,LISTE *pL2,LISTE *pL3,ELEMENT *pe)
{
	LISTE L1=*pL1,L2=*pL2,L3=*pL3;
	ELEMENT *e=pe;

	L1=ajout_tete(e[9],L1);	
	printf("\n\nVisualisation de L1 : %p \n",L1);
	visualiser_liste(L1);
	supprimer_tete(L1);
	printf("\nCa marche....");
}
void test_liste3(LISTE *pL1,LISTE *pL2,LISTE *pL3,ELEMENT *pe)
{
	LISTE L1=*pL1,L2=*pL2,L3=*pL3;
	ELEMENT *e=pe;

	printf("\n\nVisualisation de L3 : %p \n",L3);
	visualiser_liste(L3);
	supprimer_tete(L3);
	printf("\nCa marche....");
}
void test_liste4(LISTE *pL1,LISTE *pL2,LISTE *pL3,ELEMENT *pe)
{
	LISTE L1=*pL1,L2=*pL2,L3=*pL3;
	ELEMENT *e=pe;

	L1=ajout_tete(e[1],L3);
	printf("\n\nVisualisation de L3 : %p \n",L3);
	visualiser_liste(L3);
	supprimer_tete(L3);
	printf("\nCa marche....");
}

